Trimiterea unui mesaj de la un ESP32 către WhatsApp
Astăzi m-am jucat cu un senzor DHT11 refolosit, a cărui date am vrut să le trimis către WhatsApp prin intermediul Callmebot. Mai jos am documentat pas cu pas cum am procedat.
De la senzorul DHT11 am citit temperatura și umiditatea, iar de la un server NTP citesc data și ora. Aceste date le împachetez și le trimit la interval de 10 min. În același timp am implementat în software astfel încât placa ESP32 să consume cât mai puțină energie pentru a asigura o viață lungă bateriei.
Pentru a trimite un mesaj de la un ESP32 către WhatsApp cu aceste date, folosind API-ul Callmebot, puteți urma următorii pași:
- Asigurați-vă că aveți acces la internet prin intermediul plăcii ESP32. Acest lucru poate fi realizat prin conectarea plăcii la o rețea Wi-Fi sau prin utilizarea unui modul de conectare GSM / GPRS.
- Conectați senzorul DHT11 la placa ESP32. Asigurați-vă că ați configurat corect pinii de date și de alimentare a senzorului în codul dvs, iar între pin-ul 1 și 2 se va conecta o rezistență de 1KOhm (vezi schema)
- Creați un cont Callmebot și obțineți o cheie API. Puteți găsi instrucțiunile pentru crearea unui cont și obținerea unei chei API pe site-ul Callmebot.
- Instalați biblioteca "UrlEncode" pentru ESP32. Aceasta va fi necesară pentru a codifica mesajele pentru a putea fi trimise
- Scrieți codul pentru a citi datele temperatură și umiditate de la senzorul DHT11 și pentru a le include într-un mesaj care va fi trimis prin intermediul API-ului Callmebot către un număr de WhatsApp specificat. Asigurați-vă că includeți cheia API Callmebot și numărul de telefon destinatar în codul dvs. (vezi codul de test de mai jos)
- Încărcați codul pe placa ESP32 și verificați dacă mesajul a fost trimis cu succes către numărul de telefon specificat.
Reducerea și optimizarea consumului
De asemenea, aș vrea să menționez că pentru a trimite mesaje periodic la intervale de timp specifice, am folosit chiar funcția loop din Arduino, pentru a controla intervalul de timp între trimiterile mesajelor, dar am vrut și un consum cât mai mic de curent având în vedere că folosesc o baterie drept sursă de alimentare, iar pentru asta am implementat să trimit procesorul ESP32 în "deep sleep", și îl trezesc period la 10 min.
Practic pentru reducerea și optimizarea consumului de energie al plăcii ESP32, am oprit complet dispozitivului atunci când placa nu este utilizată, și trezesc dispozitivul doar câteva secunde pentru a citi datele și pentru a le trimite datele pe WhatsApp.
În modul de "deep sleep", placa ESP32 își oprește toate componentele, cu excepția unui timer intern și a unui modul de trezire, și consumă foarte puțină energie. Pentru a trece placa ESP32 în modul de "deep sleep", puteți folosi funcția "esp_deep_sleep_start()" din biblioteca "esp32-hal-sleep.h".
Pentru a trezi placa din modul de "deep sleep", puteți utiliza unul dintre următoarele moduri:
- Un semnal de trezire extern, precum un semnal de întrerupere sau un semnal de rețea Wi-Fi.
- Un timer intern, prin intermediul funcției "esp_deep_sleep_set_wakeup_time()".
- Un pin de întrerupere, prin intermediul funcției "esp_deep_sleep_enable_ext0_wakeup()" sau "esp_deep_sleep_enable_ext1_wakeup()".
În acest proiect am folosit trezirea prin intermediul timer-ului intern. Practic mai pe scurt, ESP32-ul se trezește la 10 min citește temperatura și umiditatea, plus citește data și ora, și trimite toate aceste date prin intermediul Callmebot pe WhatsApp catre numărul meu de telefon.
Componente
- ESP32 Development Board WiFi+bluetooth ULPower Consumption Dual Cores
- Senzor de temperatura si umiditate DHT11, Arduino
- Modul regulator de tensiune 2.5-15V la 5V OKY3501-5
- Set 12 Baterii alcaline Energizer Industrial LR22 sau 6LR61 9V 500mAh
Schema electronica/sistem
Cod de test
Rezultat
După cum se observă în imaginea de mai jos am conectat o rezistență de 1KOhm între pinul 1 și 2, adică între Data și Vcc.
Iar alimentarea plăcii ESP32 am asigurat-o folosind o baterie de 9V și un regulator de 5V (plăcuța roșie). Din păcate nu am găsit acest regulator în fritzing, și în schema de mai sus am folosit o placă echivalentă (placa albastră din schemă). Ieșirea + si - de la regulator le-am conectat la VIN si GND de pe ESP32 (vezi și în schema de mai sus).
Documentație proiect
- https://www.electronicoscaldas.com/datasheet/DHT11_Aosong.pdf
- https://randomnerdtutorials.com/esp32-dht11-dht22-temperature-humidity-sensor-arduino-ide/
- https://randomnerdtutorials.com/esp32-ntp-client-date-time-arduino-ide/
- https://randomnerdtutorials.com/esp32-send-messages-whatsapp/
- https://www.callmebot.com/blog/free-api-whatsapp-messages/
Todo
- Să printez o cutiuță faină pentru ESP32
- Să trimit aceeași informație către Home Assistant folosind protocolul MQTT
Afiliere eMag:
Linkurile de la secțiunea "Componente" conțin adresa mea de afiliere la eMag.ro, iar dacă cumperi folosind aceste linkuri vei susține blogul meu. Mulțumesc!eMag Genius:
Hai și tu în Genius! Abonează-te la Genius 12 luni și primești beneficii premium și 20 lei card cadou eMAG. Profită acum! eMag Genius
Mulțumesc pentru atenție!
Pentru întrebari și/sau consultanță tehnică vă stau la dispozitie pe blog mai jos în secțiunea de comentarii sau pe email simedruflorin@automatic-house.ro. O zi și seară plăcută tuturor !